﻿<!DOCTYPE html>
<html><head>
  <title>OpenType 布局特征代码编辑器</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=8">
  <meta name="generator" content="Help &amp; Manual">
  <meta name="keywords" content="Adobe OpenType Feature Description Language,FEA,Microsoft Visual OpenType Layout Tool,OpenType Layout Feature Definition,OpenType Layout Features,OTLFD,VOLT">
  <meta name="description" content="The OpenType Layout Feature Code Editor allows you to take full control over all the supported OpenType layout features in your font. If you want to automatically generate...">
  <link type="text/css" href="default.css" rel="stylesheet">
  <link type="text/css" href="custom.css" rel="stylesheet">
  <style type="text/css" media="screen">
      html,body { margin:0;
        padding:0;
       background: #ffffff;
      }
      div#printheader { display: none; }
      #idheader {
        width:100%;
        height:auto;
        padding: 0;
        margin: 0;
        position: fixed;
        top: 0;
        z-index: 2;
      }
      /* The "min-height" for "#idheader table" ensures that the (blue) header of the topic
         has at least the same height as the header of the navigation panel left of it */
      #idheader table {background: #2C5D88; min-height: 59px }
      #idheader h1 span { color: #FFF }
      #idnav {
        text-align: right;
        width: 126px;
        vertical-align: middle;
      }
      #idnav a { text-decoration: none }
      #idnav span {
        display: inline-block;
        width: 24px;
        height: 24px;
        margin-left: 4px;
       background:url('hm_webhelp_buttons_grey.png') top left no-repeat;
      }
      #idnav a span {
       background-image:url('hm_webhelp_buttons_white.png');
      }
      #idnav a span:hover {
       background-image:url('hm_webhelp_buttons_orange.png');
      }
      #idnav span.hmbtnprev {background-position: 0 -32px }
      #idnav span.hmbtnnext {background-position: -24px -32px }
      #idnav span.hmbtntop  {background-position: -48px -32px }
      #idnav span.hmbtntoggle  { width: 20px;background-position: -70px -32px }
      #idnav span.hmbtnprint  {background-position: -88px -32px }
      #callout-table, #overview-table {display:block; position:relative; top:0; left:0;}
      #callout-icon {display:block; position:absolute; top:-11px; left:-11px;}
      #callout-icon-flag {display:block; position:absolute; top:-11px; left:-8px;}
      #callout-table a {text-decoration: none; color:blue;}
      #callout-table a:visited {text-decoration: none; color:blue;}
      #overview-table a {text-decoration: none; color:black;}
      #overview-table a:visited {text-decoration: none; color:black;}
      #callout-table a:hover, #overview-table a:hover {text-decoration: underline;}
      p.help-url { margin: 20px 0 5px 0; text-align: center; font-size: 80%; text-decoration: none }
      #switchtoggles { text-align: right; padding: 0 2px 0 0; font-size: 90%; }
      .sync-toc { color: #FFF; font-size: 8pt; font-weight:bold; display: none; }
      .sync-toc a { color: #FFF; text-decoration: none; font-weight:bold;}
      .sync-toc a:visited { color: #FFF; }
      .sync-toc a:hover { text-decoration: underline; }
      a.hmanchor { display: inline-block; margin-top: -4em; padding-top: 4em }	
  </style>
  <style type="text/css" media="print">
      div#idheader, img.dropdown-toggle-icon, p.help-url { display:none }
  </style>
  <script type="text/javascript" src="jquery.js"></script>
  <script type="text/javascript" src="helpman_settings.js"></script>
  <script type="text/javascript" src="helpman_topicinit.js"></script>
</head>
<body>
<div id="printheader"><h1 class="p_Heading1" style="page-break-after: avoid;"><span class="f_Heading1">OpenType 布局特征代码编辑器</span></h1>
</div>
<div id="idheader" style="position: relative;">
<div id="idheaderbg">
<table style="width:100%;border:none;margin:0px;" cellspacing="0" cellpadding="0">
 <tbody><tr>
   <td class="topichead" style="text-align:left; vertical-align:bottom">
     <p class="crumbs"><b>导航：</b>&nbsp;编辑字体 &gt; 格式 &gt; OpenType 布局特征 &gt; 脚本编辑器 &gt;</p>
     <h1 class="p_Heading1" style="page-break-after: avoid;"><span class="f_Heading1">OpenType 布局特征代码编辑器</span></h1>
   </td>
   <td class="topichead" id="idnav">
     <a href="fc_opentype-proofing.html" title="上一主题"><span class="hmbtnprev"></span></a>
     <a href="welcometothefontcreator.html" title="返回首章"><span class="hmbtntop"></span></a>
     <a href="otlf_basics.html" title="下一主题"><span class="hmbtnnext"></span></a>
   </td>
 </tr>
</tbody></table>
</div>
</div>
<div id="idcontent" style="margin-top: 0px;"><div id="innerdiv">
<!--ZOOMRESTART-->
<p class="p_Normal"><span style="font-weight:bold;">OpenType 布局特征代码编辑器</span>，使您可以完全操控字体中所有受支持的 OpenType 布局特征。如果您想自动生成特征，请点击 <a href="fc_opentypedesigner.html" class="topiclink">OpenType 设计器</a>对话框左上角的工具栏图标。</p>
<p class="p_Normal">&nbsp;</p>
<p class="p_Normal">因为以视觉方式添加特征可能非常耗时，编辑器允许您通过三种受支持的脚本语言(scripting language)之一，来定义和编辑字形替换(Glyph Substitution，GSUB)和字形定位(Glyph Positioning，GPOS)的 OpenType 布局特征。FontCreator 支持下列基于脚本(script-based)的语法：</p>
<p class="p_Normal" style="text-indent: 0; padding-left: 0.1354in; margin-left: 0;"><span style="display:inline-block;width:0.1354in;margin-left:-0.1354in;font-size:12pt;font-family:'Symbol';font-style:normal;color:#000000;text-decoration:none;">&#183;</span>OpenType 布局特征定义 - OpenType Layout Feature Definition (OTLFD)，是<a href="otlf_basics.html" class="topiclink">我们自己的语法</a>，基于与 OTComp 一起使用的语法。</p><p class="p_Normal" style="text-indent: 0; padding-left: 0.1354in; margin-left: 0;"><span style="display:inline-block;width:0.1354in;margin-left:-0.1354in;font-size:12pt;font-family:'Symbol';font-style:normal;color:#000000;text-decoration:none;">&#183;</span>微软可视化 OpenType 布局工具 - Microsoft Visual OpenType Layout Tool (<a href="https://docs.microsoft.com/en-us/typography/tools/volt/" target="_blank" rel="nofollow" class="weblink">MS VOLT</a> )，通过 OpenType 设计器窗口，导入和导出一个完整的 VOLT 项目(*.vtp)文件。</p><p class="p_Normal" style="text-indent: 0; padding-left: 0.1354in; margin-left: 0;"><span style="display:inline-block;width:0.1354in;margin-left:-0.1354in;font-size:12pt;font-family:'Symbol';font-style:normal;color:#000000;text-decoration:none;">&#183;</span>奥多比 OpenType 特征描述语言 - Adobe OpenType feature description language (<a href="http://adobe-type-tools.github.io/afdko/OpenTypeFeatureFileSpecification.html" target="_blank" rel="nofollow" class="weblink">AFDKO FEA</a> )，最常见的已知特征语法.</p><p class="p_NoteorTip"><span class="f_NoteorTip">注意：尽管 AFDKO FEA 特征语法为许多字体设计者所使用，但其有几个限制。FEA 无法始终强制执行一个特定的查询顺序，而整形引擎(shaping engines)却依赖于<a href="fc_opentypedesigner.html" class="topiclink">查询顺序</a>。FEA并不完全支持 class0 类组，只能把单个和连字替换添加到某一单个 aalt 特征，该特征会被所有的文字语言对子所使用。在配对定位查询中，只能强制中断子表。如果需要，必须手动指示编译器使用一个特殊的扩展查询。除了这些限制，该语法还支持指定(specifying)或覆盖(overriding)表值，这在导入基于 UFO 的字体时很有用处。</span></p>
<p class="p_NoteorTip"><span class="f_NoteorTip">注意：VOLT也有几个限制。例如，其不支持嵌套的链式上下文(chained context)查询。没有直接定义子表的方法。类组名称不区分大小写。不支持<b>忽略连字</b>(Ignore Ligatures)标志。</span></p>
<p class="p_Normal">默认情况下，代码编辑器将使用我们自己的 OTLFD 语法，因为即使是最复杂的 OpenType 布局特征也可以表示出来，但您可以从组合框中选择 FEA 和 VOLT，该组合框位于 OpenType 布局特征代码编辑器窗口的左上角。</p>
<p class="p_Normal">&nbsp;</p>
<p class="p_Normal">您在方便的时候，可以更新和更改脚本。工具栏上的<b>查找</b>和<b>替换</b>功能可能对此很有用。快捷键 Ctrl + F 打开搜索文本对话框，F3 键查找当前所搜索文本的下一个匹配项，Shift + F3 键 查找上一个匹配项。</p>
<p class="p_Normal"><img style="margin:0;width:8.3333in;height:6.2500in;border:none" src="fontcreator_102_otlfeditor.png"></p>
<p class="p_Normal">按 CTRL + 空格键，显示字形名称和类组名称完成助手。</p>
<p class="p_Normal">要测试语法是否正确、所有<span style="font-weight:bold;">字形名称</span>是否有效，请点击工具栏上的<span style="font-weight:bold;">语法检查按钮</span>或使用快捷键 F9。如果有任何语法错误或无法解析的字形名称，在<span style="font-weight:bold;">输出</span>窗口中都将予以列示。您可以双击错误提示，快速跳转至发生错误的那一行。</p>
<p class="p_Normal">如果想让编译器忽略未知的字形，并允许空的类组和查询，请点击工具栏中的<b>忽略未知的字形</b>(警告)图标。</p>
<p class="p_Normal">点击<span style="font-weight:bold;">确定</span>按钮后，代码将被编译，成功后将替换所有现存的文字、特征、查询和类组，并会合并锚点。</p>
<!--ZOOMSTOP-->
</div></div>
<script type="text/javascript">
  $(document).ready(function(){
    $(window).bind('resize', function() {
      var y = $('#idheader').height();
      $('#idcontent').css('margin-top', y);
      var par = window.parent;
      if ($( par ).width()<= $( window ).width()+20) {
        $('#idheader').css('position', 'relative');
        $('#idcontent').css('margin-top', 0);
        $('#idbacktotop').css('display', 'block');
        $('.hmanchor').css('margin-top', -20);
	$('.hmanchor').css('padding-top', 20);
      }
      else {
        $('#idheader').css('position', 'fixed');
        $('#idcontent').css('margin-top', $('#idheader').height());
        $('#idbacktotop').css('display', 'none');
        $('.hmanchor').css('margin-top', -y-20);
	$('.hmanchor').css('padding-top', y+20);
      }
    });
    $(window).resize(); //trigger event for initially small displays
  });
</script>
</body></html>